1. Einleitung

Insgesamt gibt es ca. 6500 bis 7000 Sprachen auf der Welt. Etwa die Hälfte der Erdbevölkerung sprechen eine der 10 meistgesprochenen Sprachen. Die sind Mandarin-Chinesisch, Englisch, Spanisch, Hindi, Arabisch, Portugiesisch, Bengali, Russisch, Japanisch und Deutsch.

Verschiedene Sprachen haben verschiedene Wortstellungsmöglichkeiten, zum Beispiel ist die Wortfolge auf Deutsch Subjekt-Verb-Objekt, wie im Satz “Ich koche Suppe.”, aber auf Japanisch ist die Wortfolge Subjekt-Objekt-Verb, wie im Satz: Watashi wa su-pu wo tsukuru Ich Suppe kochen

Jedoch kann man nicht sagen, dass die Sprachen auf der Welt keine Gemeinsamkeiten haben. Denn alle Sprachen haben Wörter und Sätze, Wörter werden aus elementaren bedeutungslosen Lauten oder Gesten gebildet, alle Sprachen haben komplexe morphologische und/oder syntaktische Strukturen, alle Sprachen haben Frageausdrücke und Verneinungsausdrücke usw.

Es lassen sich oft universale Behauptungen nur aufstellen, wenn eine weitere Bedingung erfüllt ist: Implikationsuniversalien (vgl. W. Croft 2009). “Wenn eine Sprache L die Eigenschaft A hat, dann hat sie auch die Eigenschaft B”

Beispielsweise “Wenn eine Sprache ein [f] Laut hat, dann hat sie auch ein [s] Laut; Wenn in einer Sprache das Objekt dem Verb vorangeht”Der Hund die Katze jagt“, dann steht auch der Besitzer vor dem Besitz”des Hundes Hütte“.

Nach dieser Theorie wird in dieser Umfrage den Zusammenhangen zwischen den Wortfolgen im Satz und den Wortstellungen in Nominalphrasen von Sprachen der Welt anschauen, ob es nach dieser Theorie auch Ausnahme gibt oder die Zusammenhangen nach Statistik signifikant ist.

2. Eigene Untersuchung

Um den Zusammenhangen zwischen der Wortfolge im Satz und den Wortstellungen in Nominalphrasen in der Sprache herauszufinden, wurde einen Fragebogen mit 10-deutschen Sätzen an Informanten mit verschiedene Muttersprachen gegeben. Von Januar bis Ende Februar 2018 habe ich insgesamt 26 Fragebogen von Informanten zurückbekommen.

2.1 Überlegungen zur Wahl der Informanten und Sprachen

Die Überlegungen zur Wahl der Personen war es, dass wir nur die Muttersprachler suchen. Denn die L2-Leaner sind meistens unsicher für die Übersetzung und brauchen Lehrbücher oder Wörterbuch, um den Übersetzungsbögen ins anderen Sprachen zu übersetzen.

Natürlich ist es optimal, wenn man die Sprachen von der ganzen Welt bekommen kann oder von vielen Sprachfamilien, am besten auch ein paar isolierte Sprache oder die Sprache mit wenige Sprecher, erheben kann. Leider habe ich insgesamt nur 26 Sprachen erhoben. Die insgesamt erhobene 26 Sprachen sind: Deutsch, Englisch, Niederländisch, Französisch, Italienisch, Griechisch, Portugiesisch, Polnisch, Russisch, Ukrainisch, Rumänisch, Armenisch, Türkisch, Tigrinja, Hindi, Vietnamesisch, Indonesisch, Kroatisch, Georgisch, Berber, Persisch und Spanisch von Mexiko.

Die erhobenen Sprachen sind gut auf den Sprachfamilien geteilt. Es gibt nicht nur Indoeuropäische Sprachen wie Deutsch, Englisch, Niederländisch, Französisch, Spanisch, Italienisch, Griechisch, Portugiesisch, Polnisch, Russisch, Ukrainisch, Rumänisch, Hindi, Kroatisch und Persisch, sondern auch die isolierten Sprachen wie Koreanisch, Japanisch und Chinesisch. Außerdem sind die Altaische Sprachen wie Türkisch, Afroasiatische Sprachen wie Tigrinja und Berber, Sinotibetische Sprachen wie Kantonesisch, Austroasiatische Sprache wie Vietnamesisch, Austronesisch wie Indonesisch und Südkaukasische Sprachen wie Georgisch. (vgl. Wals.info)

Im Folgenden werden die Daten von den erhobenen Sprachen in “R” eingelesen und schließlich wird eine Karte für eine Übersicht der erhobenen Sprachen mit diesen Daten dargestellt.

Daten <- read.csv ("//Users/verawei/Desktop/HA Sprachtypologie/sources/Umfragedaten.csv"
                    , header = TRUE
                   , sep = ";")
summary(Daten)
        Sprache                 Land        Gattung              Familie      Latitude       Longitude     
 Armenisch  : 1   China           : 2   Romance : 5   Indoeuropäisch :16   Min.   : 0.00   Min.   :-99.38  
 Berber     : 1   Iran            : 2   Slavic  : 4   Afroasiatisch  : 2   1st Qu.:32.17   1st Qu.: 10.50  
 Chinesisch : 1   Deutschland     : 1   Germanic: 3   Altaisch       : 1   Median :39.00   Median : 34.00  
 Deutsch    : 1   England         : 1   Armenian: 1   Austroasiatisch: 1   Mean   :36.66   Mean   : 41.68  
 Englisch   : 1   Ethiopia Eritrea: 1   Berber  : 1   Austronesisch  : 1   3rd Qu.:47.50   3rd Qu.: 71.25  
 Französisch: 1   Frankreich      : 1   Chinese : 1   Chinesisch     : 1   Max.   :56.00   Max.   :140.00  
 (Other)    :20   (Other)         :18   (Other) :11   (Other)        : 4                                   
 Wortfolge          Adjektiv.Nomen     Musik.Mozart    Artikel.Nomen Farbe.Nomen Numeral.Nomen    Artikel.Farbe
 SOV: 6    Adj+N           :17     MoMu      : 9    DET+N     :23    Fa+N:18     Num+N:26      DET+Fa    :18   
 SVO:20    N+Adj           : 7     MuMo      :15    N+DET     : 2    N+Fa: 8                   Fa+DET    : 1   
           No domiant order: 2     nicht klar: 2    nicht klar: 1                              nicht klar: 7   
                                                                                                               
                                                                                                               
                                                                                                               
                                                                                                               
   Artikel.Numeral   Artikel.Adjektiv Farbe.Adjektiv Adjektiv.Adjektiv.Umfang
 DET+Num   :21     Adj+DET   : 2      Adj+Fa:20      Adj-U+Adj : 8           
 nicht klar: 1     DET+Adj   :22      Fa+Adj: 6      Adj+Adj-U :16           
 Num+DET   : 4     nicht klar: 2                     nicht klar: 2           
                                                                             
                                                                             
                                                                             
                                                                             

Im Bild 1 werden alle erhobenen Sprachen nach ihrer Räumlichkeit auf der Weltkarte dargestellt. Mit diesem Bild sieht man, dass die erhobene Sprachen gut auf der ganzen Welt geteilt sind. Die meisten Sprachen sind von Europa, aber asiatische und afrikanische Sprachen sind auch dabei.

Bild 1: Übersicht der erhobenen Sprachen

library(maps)
map("world", interior=FALSE, col="grey", resolution=0)
points(Daten$Longitude, Daten$Latitude
       , col = "red"
       , cex =.7
       , pch = 20)
title (main = "Übersicht der erhobenen Sprachen ")

In Folgenden Bild 2 werden diese erhobenen Sprachen nach der Sprachfamilie dargestellt. Mit dieser Darstellung kann man einen besseren Überblick über die zusammengehörige Sprachfamilie. Die erhobenen Sprachen sind gut auf den Sprachfamilien geteilt. Es gibt 16 Indoeuropäische Sprachen und zwei Afroasiatische Sprachen. Außerdem sind die Sprachfamilie Südkaukasische Sprachen, Altaische Sprachen, Austroasiatische Sprachen, Austronesische Sprache, Sinotibetische Sprachen, Chinesisch, Japanisch und Koreanisch auch dabei. Darüber hinaus kann man sagen, dass die erhobenen 26 Sprachen sehr vielfältig sind.

Bild 2: Übersicht der erhobenen Sprachen nach der Sprachfamilie

table(Daten$Familie)

  Afroasiatisch        Altaisch Austroasiatisch   Austronesisch      Chinesisch  Indoeuropäisch       Japanisch 
              2               1               1               1               1              16               1 
     Koreanisch   Sinotibetisch   Südkaukasisch 
              1               1               1 
maps::map("world"
          ,interior = FALSE
          , col = "grey"
          , resolution = 0)
cols <- c("darkgreen", "blue", "yellowgreen", "gold", "purple", "red", "deepskyblue2", "darkblue", "darkorchid1", "green3")
mycols <- cols[Daten$Familie]
mysymbols <- c(20, 20, 20, 20, 20, 20, 20, 20, 20, 20)
Sprachefamilie <- mysymbols[Daten$Familie]
myname <- c("Afroasiatisch", "Altaisch", "Austroasiatisch", "Austronesisch", "Chinesisch", "Indoeuropäisch", "Japanisch", "Koreanisch", "Sinotibetisch", "Südkaukasisch")
points(Daten$Longitude, Daten$Latitude
       , pch = Sprachefamilie
       , col = mycols
       )
title(main = "Übersicht der erhobenen Sprachen nach der Sprachfamilie")
legend ("bottomleft"
        , legend = myname
        , pch = Sprachefamilie
        , col = cols
        , cex = 0.7
        , pt.cex = 1.5)

Die Auswahl von Farben in der Karte sind schwierig. Eine Seite sollten die näh zusammengehörige Sprachfamilie eine ähnliche Farbe bekommen, andere Seite sollten die Ortspunkte von Sprachen gut auffällig sind.

2.2 Übersetzungssätzen

Dieser Übersetzungsbogen wurde von mir und zwei weiteren Studentinnen zusammengestellt. Mit diesem Übersetzungsbogen möchten wir herausfinden, wie bestimmte Sätze in verschiedene Sprachen aufgebaut sind, wie Superlativ und Modalpartikeln. Ich interessiere mich sehr über den Zusammenhang zwischen den Wortfolgen und den Wortstellungen in Nominalphrasen von Sprachen der Welt.

Daher enthält der Übersetzungsbogen folgende Zehn Sätze: 1. Ich koche Suppe. 2. Der Bäcker backt ja das Brot am schnellsten. 3. Die Schüler hören am liebsten Musik von Mozart. 4. Die Touristen sehen diese fünf großen Häuser. 5. Die Kinder werfen doch einen schönen großen roten Ball. 6. Was machst du denn? 7. Du hast eben nicht genug gelernt! 8. Tim wirft den Ball am weitesten. 9. Kleine Hunde bellen aber am lautesten. 10. Das feuchte Holz verbrennt am schlechtesten.

Für mein Analysieren sind nur folgende Satzteilen relevant: - 1. Ich koche Suppe. [Subjekt + Verb + Objekt] - 3. Musik von Mozart [ Nomen + Nomen] - 4. diese fünf großen Häuser [DET + Num + Adj-Umfang + N] - 5. einen schönen großen roten Ball [ ART + Adj + Adj-Umfang + Farbe + N] - 9. kleine Hunde [Adj + N] - 10. das feuchte Holz [DET + Adj + N]

Mit Satz 1 möchte ich die Wortfolgen im Satz von der Sprache festzustellen. Leider gibt es viele Sprachen, wenn der Subjekt im Satz “ich” ist, fällt den Subjekt weg und wird mit der Endung von Verb markiert. Daher habe ich die Wortfolgen von der Sprache immer auf alle gefragte zehn Sätzen berücksichtigt. “Musik von Mozart” sind zwei Nomen, daher analysiere ich nur die Rheinfolge von “Musik” und “Mozart”.

2.3 Methode und Ablauf

Die meisten Informanten sind meine Arbeitskollegen, Freunden oder Kommilitonen. Durch persönliche Gespräche, E-Mails und Nachtrichten von Facebook habe ich sie als Informanten gewinnen. Die Übersetzungsbogen sind entweder in ausgedrückten Papierformen an Informanten persönlich gegeben, oder als Word- oder PDF-Datei an Informanten per E-Mail erreichtet.

3. Ergebnisse der Umfrage

3.1 Einlesen der gesamten Ergebnisse der Umfrage

3.2 Die Wortfolge von Subjekt, Objekt und Verb der erhobenen Sprachen

Bild 3: Die Wortfolge von Subjekt, Objekt und Verb der erhobenen Sprachen

table(Daten$Wortfolge)

SOV SVO 
  6  20 
maps::map("world"
          ,interior = FALSE
          , col = "grey"
          , resolution = 0)
cols <- c("blue", "red")
mycols <- cols[Daten$Wortfolge]
mysymbols <- c(20, 20)
Wortfolge <- mysymbols[Daten$Wortfolge]
freq <- table(Daten$Wortfolge)
myname <- c(
      paste0("SOV-Sprache (", freq[1], ")")
    , paste0("SVO-Sprache (", freq[2], ")")
    )
points(Daten$Longitude, Daten$Latitude
       , pch = Wortfolge
       , col = mycols)
title(main = "Die Wortfolge von Subjekt, Objekt und Verb der erhobenen Sprachen")
legend ("bottomleft"
        , legend = myname
        , pch = Wortfolge
        , col = cols
        , cex = 0.7
        , pt.cex = 1.5)

Nicht nur auf Satz 1 “Ich koche Suppe” sondern auch alle andere Sätze berücksichtigt.

3.3 Die Wortstellungen in Nominalphrasen der erhobenen Sprachen

3.3.1 Die Reihenfolge von Adjektiv und Nomen in Nominalphrase

table(Daten$Adjektiv.Nomen)

           Adj+N            N+Adj No domiant order 
              17                7                2 

Bild 4: Die Reihenfolge von Adjektiv und Nomen in Nominalphrase

maps::map("world"
          ,interior = FALSE
          , col = "grey"
          , resolution = 0)
cols <- c("red", "blue", "green3")
mycols1 <- cols[Daten$Adjektiv.Nomen]
mysymbols <- c(20, 20, 20)
AdjNon <- mysymbols[Daten$Adjektiv.Nomen]
myname <- c("Adjektiv vor Nomen (17)", "Nomen vor Adjektiv (7)", "Beides (2)")
points (Daten$Longitude, Daten$Latitude
       , pch = AdjNon
       , col = mycols1)
title(main = "Die Reihenfolge von Adjektiv und Nomen in Nominalphrase")
legend ("bottomleft"
        , legend = myname
        , pch = AdjNon
        , col = cols
        , cex = 0.7
        , pt.cex = 1.5)

Alle berücksichtige Nominalphrase:

3.3.2 Die Reihenfolge von Artikel und Nomen in Nominalphrase

table(Daten$Artikel.Nomen)

     DET+N      N+DET nicht klar 
        23          2          1 

Bild 5: Die Reihenfolge von Artikel und Nomen in Nominalphrase

maps::map("world"
          ,interior = FALSE
          , col = "grey"
          , resolution = 0)
cols <- c("red", "blue", "green3")
mycols2 <- cols[Daten$Artikel.Nomen]
mysymbols <- c(20, 20, 20)
ArtNon <- mysymbols[Daten$Artikel.Nomen]
myname <- c("Artikel vor Nomen (23)", "Nomen vor Artikel (2)", "Nicht Klar (1)")
points (Daten$Longitude, Daten$Latitude
       , pch = ArtNon
       , col = mycols2)
title(main = "Die Reihenfolge von Artikel und Nomen in Nominalphrase")
legend ("bottomleft"
        , legend = myname
        , pch = ArtNon
        , col = cols
        , cex = 0.7
        , pt.cex = 1.5)

Alle berücksichtige Nominalphrase:

??? NA zeigt hier in der Karte nicht… Persisch ???

Warum nicht klar? nicht eingegeben? nicht vorkommen? etc.

3.3.3 Die Reihenfolge von Farbe und Nomen in Nominalphrase “roter Ball”

table(Daten$Farbe.Nomen)

Fa+N N+Fa 
  18    8 

Bild 6: Die Reihenfolge von Farbe und Nomen in Nominalphrase: roter Ball

maps::map("world"
          ,interior = FALSE
          , col = "grey"
          , resolution = 0)
cols <- c("red", "blue")
mycols3 <- cols[Daten$Farbe.Nomen]
mysymbols <- c(20, 20)
FarbNon <- mysymbols[Daten$Farbe.Nomen]
myname <- c("Farbe vor Nomen (18)", "Nomen vor Farbe (8)")
points (Daten$Longitude, Daten$Latitude
       , pch = FarbNon
       , col = mycols3)
title(main = "Die Reihenfolge von Farbe und Nomen in Nominalphrase: roter Ball")
legend ("bottomleft"
        , legend = myname
        , pch = FarbNon
        , col = cols
        , cex = 0.7
        , pt.cex = 1.5)

3.3.4 Die Reihenfolge von Numeral und Nomen in Nominalphrase “fünf Häuser”

table(Daten$Numeral.Nomen)

Num+N 
   26 

Bild 7: Die Reihenfolge von Numeral und Nomen in Nominalphrase: fünf Häuser

maps::map("world"
          ,interior = FALSE
          , col = "grey"
          , resolution = 0)
cols <- c("blue", "red")
mycols4 <- cols[Daten$Numeral.Nomen]
mysymbols <- c(20)
NumNon <- mysymbols[Daten$Numeral.Nomen]
myname <- c("Numeral vor Nomen (26)", "Nomen vor Numeral (0)")
points (Daten$Longitude, Daten$Latitude
       , pch = NumNon
       , col = mycols4)
title(main = "Die Reihenfolge von Numeral und Nomen 
in Nominalphrase: fünf Häuser")
legend ("bottomleft"
        , legend = myname
        , pch = NumNon
        , col = cols
        , cex = 0.7
        , pt.cex = 1.5)

In allen erhobenen Sprachen sind Numeral vor Nomen in Nominalphrase “fünf Häuser”, hier gibt es keine Ausnahme.

3.3.5 Die Wortfolge von Genitiv und Nomen in Nominalphrase “Musik von Mozart”

table(Daten$Musik.Mozart)

      MoMu       MuMo nicht klar 
         9         15          2 

Bild 8: Die Wortfolge von Genitiv und Nomen in Nominalphrase: Musik von Mozart

maps::map("world"
          ,interior = FALSE
          , col = "grey"
          , resolution = 0)
cols <- c("red", "blue", "green3")
mycols5 <- cols[Daten$Musik.Mozart]
mysymbols <- c(20, 20, 20)
MuMo <- mysymbols[Daten$Musik.Mozart]
myname <- c("Genitiv vor Nomen (9)", "Nomen vor Genitiv (15)", "Nicht klar (2)")
points (Daten$Longitude, Daten$Latitude
       , pch = MuMo
       , col = mycols5)
title(main = "Die Wortfolge von Genitiv und Nomen
in Nominalphrase: Musik von Mozart")
legend ("bottomleft"
        , legend = myname
        , pch = MuMo
        , col = cols
        , cex = 0.7
        , pt.cex = 1.5)

3.4 Die Reihenfolge von verschiedenen Arten der Adjektiven in Nominalphrase

3.4.1 Die Reihenfolge von Artikel und Farbe in Nominalphrase “einen roten Ball”

table(Daten$Artikel.Farbe)

    DET+Fa     Fa+DET nicht klar 
        18          1          7 

Bild 9: Die Reihenfolge von Artikel und Farbe in Nominalphrase: einen roten Ball

maps::map("world"
          ,interior = FALSE
          , col = "grey"
          , resolution = 0)
cols <- c("blue", "red", "green3")
mycols6 <- cols[Daten$Artikel.Farbe]
mysymbols <- c(20, 20, 20)
ArtFa <- mysymbols[Daten$Artikel.Farbe]
myname <- c("Artikel vor Farbe (28)", "Farbe vor Artikel (1)", "Nicht klar (7)")
points (Daten$Longitude, Daten$Latitude
       , pch = ArtFa
       , col = mycols6)
title(main = "Die Reihenfolge von Artikel und Farbe 
in Nominalphrase: einen roten Ball")
legend ("bottomleft"
        , legend = myname
        , pch = ArtFa
        , col = cols
        , cex = 0.7
        , pt.cex = 1.5)

??? Warum so vile “nicht klar”

3.4.2 Die Reihenfolge von Artikel und Numeral in Nominalphrase “diese fünf Häuser”

table(Daten$Artikel.Numeral)

   DET+Num nicht klar    Num+DET 
        21          1          4 

Bild 10: Die Reihenfolge von Artikel und Numeral in Nominalphrase: diese fünf Häuser

maps::map("world"
          ,interior = FALSE
          , col = "grey"
          , resolution = 0)
cols <- c("blue", "green3", "red")
mycols7 <- cols[Daten$Artikel.Numeral]
mysymbols <- c(20, 20, 20)
ArtNum <- mysymbols[Daten$Artikel.Numeral]
myname <- c("Artikel vor Numeral (21)", "Nicht klar (1)", "Numeral vor Artikel (4)")
points (Daten$Longitude, Daten$Latitude
       , pch = ArtNum
       , col = mycols7)
title(main = "Die Reihenfolge von Artikel und Numeral
in Nominalphrase: diese fünf Häuser")
legend ("bottomleft"
        , legend = myname
        , pch = ArtNum
        , col = cols
        , cex = 0.7
        , pt.cex = 1.5)

3.4.3 Die Reihenfolge von Artikel und Adjektiv in Nominalphrase “das feuchte Holz”

table(Daten$Artikel.Adjektiv)

   Adj+DET    DET+Adj nicht klar 
         2         22          2 

Bild 11: Die Reihenfolge von Artikel und Adjektiv in Nominalphrase: das feuchte Holz

maps::map("world"
          ,interior = FALSE
          , col = "grey"
          , resolution = 0)
cols <- c("blue", "red", "green3")
mycols8 <- cols[Daten$Artikel.Adjektiv]
mysymbols <- c(20, 20, 20)
ArtAdj <- mysymbols[Daten$Artikel.Adjektiv]
myname <- c("Adjektiv vor Artikel (22)", "Artikel vor Adjektiv (2)", "Nicht klar (2)")
points (Daten$Longitude, Daten$Latitude
       , pch = ArtAdj
       , col = mycols8)
title(main = "Die Reihenfolge von Artikel und Adjektiv 
in Nominalphrase: das feuchte Holz")
legend ("bottomleft"
        , legend = myname
        , pch = ArtAdj
        , col = cols
        , cex = 0.7
        , pt.cex = 1.5)

3.4.4 Die Reihenfolge von Farbe und Adjektiv in Nominalphrase “schönen roten Ball”

table(Daten$Farbe.Adjektiv)

Adj+Fa Fa+Adj 
    20      6 

Bild 12: Die Reihenfolge von Adjektiv und Farbe in Nominalphrase: schönen roten Ball

maps::map("world"
          ,interior = FALSE
          , col = "grey"
          , resolution = 0)
cols <- c("blue", "red")
mycols9 <- cols[Daten$Farbe.Adjektiv]
mysymbols <- c(20, 20)
FaAdj <- mysymbols[Daten$Farbe.Adjektiv]
myname <- c("Adjektiv vor Farbe (20)", "Farbe vor Adjektiv (6)")
points (Daten$Longitude, Daten$Latitude
       , pch = FaAdj
       , col = mycols9)
title(main = "Die Reihenfolge von Adjektiv und Farbe 
in Nominalphrase: schönen roten Ball")
legend ("bottomleft"
        , legend = myname
        , pch = FaAdj
        , col = cols
        , cex = 0.7
        , pt.cex = 1.5)

3.4.5 Die Reihenfolge von Adjektiv und Umfangsadjektiv in Nominalphrase “schönen großen Ball”

table(Daten$Adjektiv.Adjektiv.Umfang)

 Adj-U+Adj  Adj+Adj-U nicht klar 
         8         16          2 

Bild 13: Die Reihenfolge von Adjektiv und Umfangsadjektiv in Nominalphrase: schönen großen Ball

maps::map("world"
          ,interior = FALSE
          , col = "grey"
          , resolution = 0)
cols <- c("blue", "red", "green3")
mycols10 <- cols[Daten$Adjektiv.Adjektiv.Umfang]
mysymbols <- c(20, 20, 20)
AdjAdjU <- mysymbols[Daten$Adjektiv.Adjektiv.Umfang]
myname <- c("Umfangsadjektiv vor Adjektiv (8)", "Adjektiv vor Umfangsadjektiv (16)", "Nicht klar (2)")
points (Daten$Longitude, Daten$Latitude
       , pch = AdjAdjU
       , col = mycols10)
title(main = "Die Reihenfolge von Adjektiv und Umfangsadjektiv 
in Nominalphrase: schönen großen Ball")
legend ("bottomleft"
        , legend = myname
        , pch = AdjAdjU
        , col = cols
        , cex = 0.7
        , pt.cex = 1.5)

4. Zusammenhang zwischen den Wortfolgen und den Wortstellungen in Nominalphrasen der erhobenen Sprachen

Vermutungen

4.1 Zusammenhang zwischen den Wortfolgen und den Wortstellung der Adjektiv und Nomen

Folge1 <- table(Daten$Wortfolge, Daten$Adjektiv.Nomen)
Folge1
     
      Adj+N N+Adj No domiant order
  SOV     5     1                0
  SVO    12     6                2
barplot (Folge1
         , main = "Zusammenhang zwischen den Wortfolgen und
den Wortstellung der Adjektiv und Nomen"
         )

Der Unterschied zwischen den Sprachen kann man auch mit einem Boxplot darstellen, aber das hilft nicht so viel, weil jeder Vokal anders ist.

mosaicplot(Folge1
           , color = TRUE
           , xlab = "Wortfolge"
           , ylab = "Wortstllung der Adjektiv und Nomen"
           , main = "Zusammenhang zwischen den Wortfolgen und 
den Wortstellungen der Adjektiv und Nomen")

chisq.test(Folge1)
Chi-Quadrat-Approximation kann inkorrekt sein

    Pearson's Chi-squared test

data:  Folge1
X-squared = 1.2891, df = 2, p-value = 0.5249
t.test(Folge1)

    One Sample t-test

data:  Folge1
t = 2.4058, df = 5, p-value = 0.06118
alternative hypothesis: true mean is not equal to 0
95 percent confidence interval:
 -0.2968864  8.9635531
sample estimates:
mean of x 
 4.333333 

???

cor.test(Folge1, Folge1)

    Pearson's product-moment correlation

data:  Folge1 and Folge1
t = Inf, df = 4, p-value < 2.2e-16
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:
 1 1
sample estimates:
cor 
  1 

4.2 Zusammenhang zwischen den Wortfolgen und den Wortstellungen der Artikel und Nomen

Folge2 <- table(Daten$Wortfolge, Daten$Artikel.Nomen)
Folge2
     
      DET+N N+DET nicht klar
  SOV     5     0          1
  SVO    18     2          0
mosaicplot (Folge2
            , color = TRUE
        , xlab = "Wortfolgen"
        , ylab = "Wortstellung von Artikel und Nomen"
        , main = "Zusammenhang zwischen den Wortfolgen und
        den Wortstellungen der Artikel und Nomen ")

chisq.test(Folge2)
Chi-Quadrat-Approximation kann inkorrekt sein

    Pearson's Chi-squared test

data:  Folge2
X-squared = 3.9565, df = 2, p-value = 0.1383
t.test(Folge2)

    One Sample t-test

data:  Folge2
t = 1.5278, df = 5, p-value = 0.1871
alternative hypothesis: true mean is not equal to 0
95 percent confidence interval:
 -2.957538 11.624205
sample estimates:
mean of x 
 4.333333 
cor.test(Folge2, Folge2)

    Pearson's product-moment correlation

data:  Folge2 and Folge2
t = Inf, df = 4, p-value < 2.2e-16
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:
 1 1
sample estimates:
cor 
  1 

4.3 Zusammenhang zwischen den Wortfolgen und den Wortstellungen der Farbe und Nomen

Folge3 <- table(Daten$Wortfolge, Daten$Farbe.Nomen)
Folge3
     
      Fa+N N+Fa
  SOV    5    1
  SVO   13    7
mosaicplot (Folge3
        , color = TRUE
        , xlab = "Wortfolgen"
        , ylab = "Wortstellung von Farbe und Nomen"
        , main = "Zusammenhang zwischen den Wortfolgen und
den Wortstellungen der Farbe und Nomen ")

chisq.test(Folge3)
Chi-Quadrat-Approximation kann inkorrekt sein

    Pearson's Chi-squared test with Yates' continuity correction

data:  Folge3
X-squared = 0.12187, df = 1, p-value = 0.727
t.test(Folge3)

    One Sample t-test

data:  Folge3
t = 2.6, df = 3, p-value = 0.08038
alternative hypothesis: true mean is not equal to 0
95 percent confidence interval:
 -1.456116 14.456116
sample estimates:
mean of x 
      6.5 

4.4 Zusammenhang zwischen den Wortfolgen und den Wortstellungen der Numeral und Nomen

Folge4 <- table(Daten$Wortfolge, Daten$Numeral.Nomen)
Folge4
     
      Num+N
  SOV     6
  SVO    20
mosaicplot (Folge4
        , xlab = "Wortfolgen"
        , ylab = "Wortstellung von Numeral und Nomen"
        , main = "Zusammenhang zwischen den Wortfolgen und
den Wortstellungen der Numeral und Nomen ")

chisq.test(Folge4)

    Chi-squared test for given probabilities

data:  Folge4
X-squared = 7.5385, df = 1, p-value = 0.00604
t.test(Folge4)

    One Sample t-test

data:  Folge4
t = 1.8571, df = 1, p-value = 0.3145
alternative hypothesis: true mean is not equal to 0
95 percent confidence interval:
 -75.94343 101.94343
sample estimates:
mean of x 
       13 

5. Allgemeine Diskussion und Ausblick

Kritik In vielen Sprachen sind die Bedeutung von jedem Wort nicht klar markiert oder geschrieben, wie Persisch, Koreanisch. Man kann nur mit Wörterbuch und Google Übersetzer die Bedeutung vom einzelnen Wort raussuchen, aber meistens ist man unsicher. Daher kann man nur die Art von Wort feststellen, nicht die genaue Bedeutung und Feinheit.

Satz 1: Ich koche Suppe. In Vielen Sprachen wird der Subjekt nicht eingegeben, wenn es “ich” ist. “Ich” als Subjekt wird in der Endung von Verb makiert.

Kritik: 1 Nur mit ein paar Sätzen von Übersetzungen kann man nicht alle Variationen von einer Sprache bekommen, sondern nur die passende Form von diesem Satz. Das bedeutet noch lange nicht, dass andere Form in dieser Sprache nicht gibt.

2 Die im Text vergleichende Reihfolgen sind auch nicht unbedingt so ausgedrückt in der Sprache in allen Ausdrückssituationen.

Jedoch gibt es uns eine gute Überblick von Sprachen der Welt, dass die Sprache sehr vielfältig sind und doch einen Zusammenhang mit einandern haben.

Literatur- und Quellenverzeichnis

LS0tCnRpdGxlOiBadXNhbW1lbmhhbmdlbiB6d2lzY2hlbiBkZW4gV29ydGZvbGdlbiB1bmQgZGVuIFdvcnRzdGVsbHVuZ2VuIGluIE5vbWluYWxwaHJhc2VuIHZvbiBTcHJhY2hlbiBkZXIgV2VsdAphdXRob3I6ICJIdWFuIFdlaSwgTWFzdGVyIExpbktvS28sIE1hcnQuLU5yLiAyNDcxODg0IgpkYXRlOiAiYHIgU3lzLkRhdGUoKWAiCm91dHB1dDoKICBwZGZfZG9jdW1lbnQ6CiAgICB0b2M6IHllcwogIGh0bWxfbm90ZWJvb2s6CiAgICB0b2M6IHllcwogIGh0bWxfZG9jdW1lbnQ6CiAgICB0b2M6IHllcwogICAgdG9jX2Zsb2F0OiB5ZXMKLS0tCgojMS4gRWlubGVpdHVuZwoKSW5zZ2VzYW10IGdpYnQgZXMgY2EuIDY1MDAgYmlzIDcwMDAgU3ByYWNoZW4gYXVmIGRlciBXZWx0LiBFdHdhIGRpZSBIw6RsZnRlIGRlciBFcmRiZXbDtmxrZXJ1bmcgc3ByZWNoZW4gZWluZSBkZXIgMTAgbWVpc3RnZXNwcm9jaGVuZW4gU3ByYWNoZW4uIERpZSBzaW5kIE1hbmRhcmluLUNoaW5lc2lzY2gsIEVuZ2xpc2NoLCBTcGFuaXNjaCwgSGluZGksIEFyYWJpc2NoLCBQb3J0dWdpZXNpc2NoLCBCZW5nYWxpLCBSdXNzaXNjaCwgSmFwYW5pc2NoIHVuZCBEZXV0c2NoLiAKClZlcnNjaGllZGVuZSBTcHJhY2hlbiBoYWJlbiB2ZXJzY2hpZWRlbmUgV29ydHN0ZWxsdW5nc23DtmdsaWNoa2VpdGVuLCB6dW0gQmVpc3BpZWwgaXN0IGRpZSBXb3J0Zm9sZ2UgYXVmIERldXRzY2ggU3ViamVrdC1WZXJiLU9iamVrdCwgd2llIGltIFNhdHogIkljaCBrb2NoZSBTdXBwZS4iLCBhYmVyIGF1ZiBKYXBhbmlzY2ggaXN0IGRpZSBXb3J0Zm9sZ2UgU3ViamVrdC1PYmpla3QtVmVyYiwgd2llIGltIFNhdHo6CldhdGFzaGkgd2Egc3UtcHUgIHdvICB0c3VrdXJ1IApJY2ggICAgICAgIFN1cHBlICAgICAgIGtvY2hlbgoKCgpKZWRvY2gga2FubiBtYW4gbmljaHQgc2FnZW4sIGRhc3MgZGllIFNwcmFjaGVuIGF1ZiBkZXIgV2VsdCBrZWluZSBHZW1laW5zYW1rZWl0ZW4gaGFiZW4uIERlbm4gYWxsZSBTcHJhY2hlbiBoYWJlbiBXw7ZydGVyIHVuZCBTw6R0emUsIFfDtnJ0ZXIgd2VyZGVuIGF1cyBlbGVtZW50YXJlbiBiZWRldXR1bmdzbG9zZW4gTGF1dGVuIG9kZXIgR2VzdGVuIGdlYmlsZGV0LCBhbGxlIFNwcmFjaGVuIGhhYmVuIGtvbXBsZXhlIG1vcnBob2xvZ2lzY2hlIHVuZC9vZGVyIHN5bnRha3Rpc2NoZSBTdHJ1a3R1cmVuLCBhbGxlIFNwcmFjaGVuIGhhYmVuIEZyYWdlYXVzZHLDvGNrZSB1bmQgVmVybmVpbnVuZ3NhdXNkcsO8Y2tlIHVzdy4gCgpFcyBsYXNzZW4gc2ljaCBvZnQgdW5pdmVyc2FsZSBCZWhhdXB0dW5nZW4gbnVyIGF1ZnN0ZWxsZW4sIHdlbm4gZWluZSB3ZWl0ZXJlIEJlZGluZ3VuZyBlcmbDvGxsdCBpc3Q6IEltcGxpa2F0aW9uc3VuaXZlcnNhbGllbiAodmdsLiBXLiBDcm9mdCAyMDA5KS4KIldlbm4gZWluZSBTcHJhY2hlIEwgZGllIEVpZ2Vuc2NoYWZ0IEEgaGF0LCBkYW5uIGhhdCBzaWUgYXVjaCBkaWUgRWlnZW5zY2hhZnQgQiIKCkJlaXNwaWVsc3dlaXNlICJXZW5uIGVpbmUgU3ByYWNoZSBlaW4gW2ZdIExhdXQgaGF0LCBkYW5uIGhhdCBzaWUgYXVjaCBlaW4gW3NdIExhdXQ7IFdlbm4gaW4gZWluZXIgU3ByYWNoZSBkYXMgT2JqZWt0IGRlbSBWZXJiIHZvcmFuZ2VodCAiRGVyIEh1bmQgZGllIEthdHplIGphZ3QiLCBkYW5uIHN0ZWh0IGF1Y2ggZGVyIEJlc2l0emVyIHZvciBkZW0gQmVzaXR6ICJkZXMgSHVuZGVzIEjDvHR0ZSIuCgpOYWNoIGRpZXNlciBUaGVvcmllIHdpcmQgaW4gZGllc2VyIFVtZnJhZ2UgZGVuIFp1c2FtbWVuaGFuZ2VuIHp3aXNjaGVuIGRlbiBXb3J0Zm9sZ2VuIGltIFNhdHogdW5kIGRlbiBXb3J0c3RlbGx1bmdlbiBpbiBOb21pbmFscGhyYXNlbiB2b24gU3ByYWNoZW4gZGVyIFdlbHQgYW5zY2hhdWVuLCBvYiBlcyBuYWNoIGRpZXNlciBUaGVvcmllIGF1Y2ggQXVzbmFobWUgZ2lidCBvZGVyIGRpZSBadXNhbW1lbmhhbmdlbiBuYWNoIFN0YXRpc3RpayBzaWduaWZpa2FudCBpc3QuIAoKIzIuIEVpZ2VuZSBVbnRlcnN1Y2h1bmcKClVtIGRlbiBadXNhbW1lbmhhbmdlbiB6d2lzY2hlbiBkZXIgV29ydGZvbGdlIGltIFNhdHogdW5kIGRlbiBXb3J0c3RlbGx1bmdlbiBpbiBOb21pbmFscGhyYXNlbiBpbiBkZXIgU3ByYWNoZSBoZXJhdXN6dWZpbmRlbiwgd3VyZGUgZWluZW4gRnJhZ2Vib2dlbiBtaXQgMTAtZGV1dHNjaGVuIFPDpHR6ZW4gYW4gSW5mb3JtYW50ZW4gbWl0IHZlcnNjaGllZGVuZSBNdXR0ZXJzcHJhY2hlbiBnZWdlYmVuLiBWb24gSmFudWFyIGJpcyBFbmRlIEZlYnJ1YXIgMjAxOCBoYWJlIGljaCBpbnNnZXNhbXQgMjYgRnJhZ2Vib2dlbiB2b24gSW5mb3JtYW50ZW4genVyw7xja2Jla29tbWVuLgoKCiMjMi4xIMOcYmVybGVndW5nZW4genVyIFdhaGwgZGVyIEluZm9ybWFudGVuIHVuZCBTcHJhY2hlbgoKRGllIMOcYmVybGVndW5nZW4genVyIFdhaGwgZGVyIFBlcnNvbmVuIHdhciBlcywgZGFzcyB3aXIgbnVyIGRpZSBNdXR0ZXJzcHJhY2hsZXIgc3VjaGVuLiBEZW5uIGRpZSBMMi1MZWFuZXIgc2luZCBtZWlzdGVucyB1bnNpY2hlciBmw7xyIGRpZSDDnGJlcnNldHp1bmcgdW5kIGJyYXVjaGVuIExlaHJiw7xjaGVyIG9kZXIgV8O2cnRlcmJ1Y2gsIHVtIGRlbiDDnGJlcnNldHp1bmdzYsO2Z2VuIGlucyBhbmRlcmVuIFNwcmFjaGVuIHp1IMO8YmVyc2V0emVuLiAKCk5hdMO8cmxpY2ggaXN0IGVzIG9wdGltYWwsIHdlbm4gbWFuIGRpZSBTcHJhY2hlbiB2b24gZGVyIGdhbnplbiBXZWx0IGJla29tbWVuIGthbm4gb2RlciB2b24gdmllbGVuIFNwcmFjaGZhbWlsaWVuLCBhbSBiZXN0ZW4gYXVjaCBlaW4gcGFhciBpc29saWVydGUgU3ByYWNoZSBvZGVyIGRpZSBTcHJhY2hlIG1pdCB3ZW5pZ2UgU3ByZWNoZXIsIGVyaGViZW4ga2Fubi4gTGVpZGVyIGhhYmUgaWNoIGluc2dlc2FtdCBudXIgMjYgU3ByYWNoZW4gZXJob2Jlbi4gRGllIGluc2dlc2FtdCBlcmhvYmVuZSAyNiBTcHJhY2hlbiBzaW5kOiBEZXV0c2NoLCBFbmdsaXNjaCwgTmllZGVybMOkbmRpc2NoLCBGcmFuesO2c2lzY2gsIEl0YWxpZW5pc2NoLCBHcmllY2hpc2NoLCBQb3J0dWdpZXNpc2NoLCBQb2xuaXNjaCwgUnVzc2lzY2gsIFVrcmFpbmlzY2gsIFJ1bcOkbmlzY2gsIEFybWVuaXNjaCwgVMO8cmtpc2NoLCBUaWdyaW5qYSwgSGluZGksIFZpZXRuYW1lc2lzY2gsIEluZG9uZXNpc2NoLCBLcm9hdGlzY2gsIEdlb3JnaXNjaCwgQmVyYmVyLCBQZXJzaXNjaCB1bmQgU3BhbmlzY2ggdm9uIE1leGlrby4gCgpEaWUgZXJob2JlbmVuIFNwcmFjaGVuIHNpbmQgZ3V0IGF1ZiBkZW4gU3ByYWNoZmFtaWxpZW4gZ2V0ZWlsdC4gRXMgZ2lidCBuaWNodCBudXIgSW5kb2V1cm9ww6Rpc2NoZSBTcHJhY2hlbiB3aWUgRGV1dHNjaCwgRW5nbGlzY2gsIE5pZWRlcmzDpG5kaXNjaCwgRnJhbnrDtnNpc2NoLCBTcGFuaXNjaCwgSXRhbGllbmlzY2gsIEdyaWVjaGlzY2gsIFBvcnR1Z2llc2lzY2gsIFBvbG5pc2NoLCBSdXNzaXNjaCwgVWtyYWluaXNjaCwgUnVtw6RuaXNjaCwgSGluZGksIEtyb2F0aXNjaCB1bmQgUGVyc2lzY2gsIHNvbmRlcm4gYXVjaCBkaWUgaXNvbGllcnRlbiBTcHJhY2hlbiB3aWUgS29yZWFuaXNjaCwgSmFwYW5pc2NoIHVuZCBDaGluZXNpc2NoLiBBdcOfZXJkZW0gc2luZCBkaWUgQWx0YWlzY2hlIFNwcmFjaGVuIHdpZSBUw7xya2lzY2gsIEFmcm9hc2lhdGlzY2hlIFNwcmFjaGVuIHdpZSBUaWdyaW5qYSB1bmQgQmVyYmVyLCBTaW5vdGliZXRpc2NoZSBTcHJhY2hlbiB3aWUgS2FudG9uZXNpc2NoLCBBdXN0cm9hc2lhdGlzY2hlIFNwcmFjaGUgd2llIFZpZXRuYW1lc2lzY2gsIEF1c3Ryb25lc2lzY2ggd2llIEluZG9uZXNpc2NoIHVuZCBTw7xka2F1a2FzaXNjaGUgU3ByYWNoZW4gd2llIEdlb3JnaXNjaC4gKHZnbC4gV2Fscy5pbmZvKQoKSW0gRm9sZ2VuZGVuIHdlcmRlbiBkaWUgRGF0ZW4gdm9uIGRlbiBlcmhvYmVuZW4gU3ByYWNoZW4gaW4gIlIiIGVpbmdlbGVzZW4gdW5kIHNjaGxpZcOfbGljaCB3aXJkIGVpbmUgS2FydGUgZsO8ciBlaW5lIMOcYmVyc2ljaHQgZGVyIGVyaG9iZW5lbiBTcHJhY2hlbiBtaXQgZGllc2VuIERhdGVuIGRhcmdlc3RlbGx0LiAKCmBgYHtyfQpEYXRlbiA8LSByZWFkLmNzdiAoIi8vVXNlcnMvdmVyYXdlaS9EZXNrdG9wL0hBIFNwcmFjaHR5cG9sb2dpZS9zb3VyY2VzL1VtZnJhZ2VkYXRlbi5jc3YiCiAgICAgICAgICAgICAgICAgICAgLCBoZWFkZXIgPSBUUlVFCiAgICAgICAgICAgICAgICAgICAsIHNlcCA9ICI7IikKYGBgCgpgYGB7cn0Kc3VtbWFyeShEYXRlbikKYGBgCgpJbSBCaWxkIDEgd2VyZGVuIGFsbGUgZXJob2JlbmVuIFNwcmFjaGVuIG5hY2ggaWhyZXIgUsOkdW1saWNoa2VpdCBhdWYgZGVyIFdlbHRrYXJ0ZSBkYXJnZXN0ZWxsdC4gTWl0IGRpZXNlbSBCaWxkIHNpZWh0IG1hbiwgZGFzcyBkaWUgZXJob2JlbmUgU3ByYWNoZW4gZ3V0IGF1ZiBkZXIgZ2FuemVuIFdlbHQgZ2V0ZWlsdCBzaW5kLiBEaWUgbWVpc3RlbiBTcHJhY2hlbiBzaW5kIHZvbiBFdXJvcGEsIGFiZXIgYXNpYXRpc2NoZSB1bmQgYWZyaWthbmlzY2hlIFNwcmFjaGVuIHNpbmQgYXVjaCBkYWJlaS4gICAKCiMjIyMgQmlsZCAxOiDDnGJlcnNpY2h0IGRlciBlcmhvYmVuZW4gU3ByYWNoZW4KCmBgYHtyfQpsaWJyYXJ5KG1hcHMpCm1hcCgid29ybGQiLCBpbnRlcmlvcj1GQUxTRSwgY29sPSJncmV5IiwgcmVzb2x1dGlvbj0wKQoKcG9pbnRzKERhdGVuJExvbmdpdHVkZSwgRGF0ZW4kTGF0aXR1ZGUKICAgICAgICwgY29sID0gInJlZCIKICAgICAgICwgY2V4ID0uNwogICAgICAgLCBwY2ggPSAyMCkKCnRpdGxlIChtYWluID0gIsOcYmVyc2ljaHQgZGVyIGVyaG9iZW5lbiBTcHJhY2hlbiAiKQpgYGAKCkluIEZvbGdlbmRlbiBCaWxkIDIgd2VyZGVuIGRpZXNlIGVyaG9iZW5lbiBTcHJhY2hlbiBuYWNoIGRlciBTcHJhY2hmYW1pbGllIGRhcmdlc3RlbGx0LiBNaXQgZGllc2VyIERhcnN0ZWxsdW5nIGthbm4gbWFuIGVpbmVuIGJlc3NlcmVuIMOcYmVyYmxpY2sgw7xiZXIgZGllIHp1c2FtbWVuZ2Vow7ZyaWdlIFNwcmFjaGZhbWlsaWUuIERpZSBlcmhvYmVuZW4gU3ByYWNoZW4gc2luZCBndXQgYXVmIGRlbiBTcHJhY2hmYW1pbGllbiBnZXRlaWx0LiBFcyBnaWJ0IDE2IEluZG9ldXJvcMOkaXNjaGUgU3ByYWNoZW4gdW5kIHp3ZWkgQWZyb2FzaWF0aXNjaGUgU3ByYWNoZW4uIEF1w59lcmRlbSBzaW5kIGRpZSBTcHJhY2hmYW1pbGllIFPDvGRrYXVrYXNpc2NoZSBTcHJhY2hlbiwgQWx0YWlzY2hlIFNwcmFjaGVuLCBBdXN0cm9hc2lhdGlzY2hlIFNwcmFjaGVuLCBBdXN0cm9uZXNpc2NoZSBTcHJhY2hlLCBTaW5vdGliZXRpc2NoZSBTcHJhY2hlbiwgQ2hpbmVzaXNjaCwgSmFwYW5pc2NoIHVuZCBLb3JlYW5pc2NoIGF1Y2ggZGFiZWkuIERhcsO8YmVyIGhpbmF1cyBrYW5uIG1hbiBzYWdlbiwgZGFzcyBkaWUgZXJob2JlbmVuIDI2IFNwcmFjaGVuIHNlaHIgdmllbGbDpGx0aWcgc2luZC4gICAgCgojIyMjIEJpbGQgMjogw5xiZXJzaWNodCBkZXIgZXJob2JlbmVuIFNwcmFjaGVuIG5hY2ggZGVyIFNwcmFjaGZhbWlsaWUKCmBgYHtyfQp0YWJsZShEYXRlbiRGYW1pbGllKQpgYGAKCgpgYGB7cn0KbWFwczo6bWFwKCJ3b3JsZCIKICAgICAgICAgICxpbnRlcmlvciA9IEZBTFNFCiAgICAgICAgICAsIGNvbCA9ICJncmV5IgogICAgICAgICAgLCByZXNvbHV0aW9uID0gMCkKCmNvbHMgPC0gYygiZGFya2dyZWVuIiwgImJsdWUiLCAieWVsbG93Z3JlZW4iLCAiZ29sZCIsICJwdXJwbGUiLCAicmVkIiwgImRlZXBza3libHVlMiIsICJkYXJrYmx1ZSIsICJkYXJrb3JjaGlkMSIsICJncmVlbjMiKQpteWNvbHMgPC0gY29sc1tEYXRlbiRGYW1pbGllXQoKbXlzeW1ib2xzIDwtIGMoMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjApClNwcmFjaGVmYW1pbGllIDwtIG15c3ltYm9sc1tEYXRlbiRGYW1pbGllXQoKbXluYW1lIDwtIGMoIkFmcm9hc2lhdGlzY2giLCAiQWx0YWlzY2giLCAiQXVzdHJvYXNpYXRpc2NoIiwgIkF1c3Ryb25lc2lzY2giLCAiQ2hpbmVzaXNjaCIsICJJbmRvZXVyb3DDpGlzY2giLCAiSmFwYW5pc2NoIiwgIktvcmVhbmlzY2giLCAiU2lub3RpYmV0aXNjaCIsICJTw7xka2F1a2FzaXNjaCIpCgpwb2ludHMoRGF0ZW4kTG9uZ2l0dWRlLCBEYXRlbiRMYXRpdHVkZQogICAgICAgLCBwY2ggPSBTcHJhY2hlZmFtaWxpZQogICAgICAgLCBjb2wgPSBteWNvbHMKICAgICAgICkKCnRpdGxlKG1haW4gPSAiw5xiZXJzaWNodCBkZXIgZXJob2JlbmVuIFNwcmFjaGVuIG5hY2ggZGVyIFNwcmFjaGZhbWlsaWUiKQoKbGVnZW5kICgiYm90dG9tbGVmdCIKICAgICAgICAsIGxlZ2VuZCA9IG15bmFtZQogICAgICAgICwgcGNoID0gU3ByYWNoZWZhbWlsaWUKICAgICAgICAsIGNvbCA9IGNvbHMKICAgICAgICAsIGNleCA9IDAuNwogICAgICAgICwgcHQuY2V4ID0gMS41KQpgYGAKCkRpZSBBdXN3YWhsIHZvbiBGYXJiZW4gaW4gZGVyIEthcnRlIHNpbmQgc2Nod2llcmlnLiBFaW5lIFNlaXRlIHNvbGx0ZW4gZGllIG7DpGggenVzYW1tZW5nZWjDtnJpZ2UgU3ByYWNoZmFtaWxpZSBlaW5lIMOkaG5saWNoZSBGYXJiZSBiZWtvbW1lbiwgYW5kZXJlIFNlaXRlIHNvbGx0ZW4gZGllIE9ydHNwdW5rdGUgdm9uIFNwcmFjaGVuIGd1dCBhdWZmw6RsbGlnIHNpbmQuIAoKCiMjMi4yIMOcYmVyc2V0enVuZ3Nzw6R0emVuCgpEaWVzZXIgw5xiZXJzZXR6dW5nc2JvZ2VuIHd1cmRlIHZvbiBtaXIgdW5kIHp3ZWkgd2VpdGVyZW4gU3R1ZGVudGlubmVuIHp1c2FtbWVuZ2VzdGVsbHQuCk1pdCBkaWVzZW0gw5xiZXJzZXR6dW5nc2JvZ2VuIG3DtmNodGVuIHdpciBoZXJhdXNmaW5kZW4sIHdpZSBiZXN0aW1tdGUgU8OkdHplIGluIHZlcnNjaGllZGVuZSBTcHJhY2hlbiBhdWZnZWJhdXQgc2luZCwgd2llIFN1cGVybGF0aXYgdW5kIE1vZGFscGFydGlrZWxuLiBJY2ggaW50ZXJlc3NpZXJlIG1pY2ggc2VociDDvGJlciBkZW4gWnVzYW1tZW5oYW5nIHp3aXNjaGVuIGRlbiBXb3J0Zm9sZ2VuIHVuZCBkZW4gV29ydHN0ZWxsdW5nZW4gaW4gTm9taW5hbHBocmFzZW4gdm9uIFNwcmFjaGVuIGRlciBXZWx0LgoKRGFoZXIgZW50aMOkbHQgZGVyIMOcYmVyc2V0enVuZ3Nib2dlbiBmb2xnZW5kZSBaZWhuIFPDpHR6ZToKMS4gSWNoIGtvY2hlIFN1cHBlLiAKMi4gRGVyIELDpGNrZXIgYmFja3QgamEgZGFzIEJyb3QgYW0gc2NobmVsbHN0ZW4uIAozLiBEaWUgU2Now7xsZXIgaMO2cmVuIGFtIGxpZWJzdGVuIE11c2lrIHZvbiBNb3phcnQuIAo0LiBEaWUgVG91cmlzdGVuIHNlaGVuIGRpZXNlIGbDvG5mIGdyb8OfZW4gSMOkdXNlci4gCjUuIERpZSBLaW5kZXIgd2VyZmVuIGRvY2ggZWluZW4gc2Now7ZuZW4gZ3Jvw59lbiByb3RlbiBCYWxsLiAKNi4gV2FzIG1hY2hzdCBkdSBkZW5uPyAKNy4gRHUgaGFzdCBlYmVuIG5pY2h0IGdlbnVnIGdlbGVybnQhIAo4LiBUaW0gd2lyZnQgZGVuIEJhbGwgYW0gd2VpdGVzdGVuLiAKOS4gS2xlaW5lIEh1bmRlIGJlbGxlbiBhYmVyIGFtIGxhdXRlc3Rlbi4gCjEwLiBEYXMgZmV1Y2h0ZSBIb2x6IHZlcmJyZW5udCBhbSBzY2hsZWNodGVzdGVuLiAKCkbDvHIgbWVpbiBBbmFseXNpZXJlbiBzaW5kIG51ciBmb2xnZW5kZSBTYXR6dGVpbGVuIHJlbGV2YW50OiAKLSAxLiBJY2gga29jaGUgU3VwcGUuIFtTdWJqZWt0ICsgVmVyYiArIE9iamVrdF0KLSAzLiBNdXNpayB2b24gTW96YXJ0IFsgTm9tZW4gKyBOb21lbl0KLSA0LiBkaWVzZSBmw7xuZiBncm/Dn2VuIEjDpHVzZXIgW0RFVCArIE51bSArIEFkai1VbWZhbmcgKyBOXQotCTUuIGVpbmVuIHNjaMO2bmVuIGdyb8OfZW4gcm90ZW4gQmFsbCBbIEFSVCArIEFkaiArIEFkai1VbWZhbmcgKyBGYXJiZSArIE5dCi0JOS4ga2xlaW5lIEh1bmRlIFtBZGogKyBOXQotCTEwLiBkYXMgZmV1Y2h0ZSBIb2x6IFtERVQgKyBBZGogKyBOXQoKTWl0IFNhdHogMSBtw7ZjaHRlIGljaCBkaWUgV29ydGZvbGdlbiBpbSBTYXR6IHZvbiBkZXIgU3ByYWNoZSBmZXN0enVzdGVsbGVuLiBMZWlkZXIgZ2lidCBlcyB2aWVsZSBTcHJhY2hlbiwgd2VubiBkZXIgU3ViamVrdCBpbSBTYXR6ICJpY2giIGlzdCwgZsOkbGx0IGRlbiBTdWJqZWt0IHdlZyB1bmQgd2lyZCBtaXQgZGVyIEVuZHVuZyB2b24gVmVyYiBtYXJraWVydC4gRGFoZXIgaGFiZSBpY2ggZGllIFdvcnRmb2xnZW4gdm9uIGRlciBTcHJhY2hlIGltbWVyIGF1ZiBhbGxlIGdlZnJhZ3RlIHplaG4gU8OkdHplbiBiZXLDvGNrc2ljaHRpZ3QuICJNdXNpayB2b24gTW96YXJ0IiBzaW5kIHp3ZWkgTm9tZW4sIGRhaGVyIGFuYWx5c2llcmUgaWNoIG51ciBkaWUgUmhlaW5mb2xnZSB2b24gIk11c2lrIiB1bmQgIk1vemFydCIuIAoKIyMyLjMgTWV0aG9kZSB1bmQgQWJsYXVmCgpEaWUgbWVpc3RlbiBJbmZvcm1hbnRlbiBzaW5kIG1laW5lIEFyYmVpdHNrb2xsZWdlbiwgRnJldW5kZW4gb2RlciBLb21taWxpdG9uZW4uIER1cmNoIHBlcnPDtm5saWNoZSBHZXNwcsOkY2hlLCBFLU1haWxzIHVuZCBOYWNodHJpY2h0ZW4gdm9uIEZhY2Vib29rIGhhYmUgaWNoIHNpZSBhbHMgSW5mb3JtYW50ZW4gZ2V3aW5uZW4uIERpZSDDnGJlcnNldHp1bmdzYm9nZW4gc2luZCBlbnR3ZWRlciBpbiBhdXNnZWRyw7xja3RlbiBQYXBpZXJmb3JtZW4gYW4gSW5mb3JtYW50ZW4gcGVyc8O2bmxpY2ggZ2VnZWJlbiwgb2RlciBhbHMgV29yZC0gb2RlciBQREYtRGF0ZWkgYW4gSW5mb3JtYW50ZW4gcGVyIEUtTWFpbCBlcnJlaWNodGV0LiAKCgoKCgojMy4gRXJnZWJuaXNzZSBkZXIgVW1mcmFnZQoKIyMzLjEgRWlubGVzZW4gZGVyIGdlc2FtdGVuIEVyZ2Vibmlzc2UgZGVyIFVtZnJhZ2UgCgoKCgoKIyMzLjIgRGllIFdvcnRmb2xnZSB2b24gU3ViamVrdCwgT2JqZWt0IHVuZCBWZXJiIGRlciBlcmhvYmVuZW4gU3ByYWNoZW4KCgojIyMjIEJpbGQgMzogRGllIFdvcnRmb2xnZSB2b24gU3ViamVrdCwgT2JqZWt0IHVuZCBWZXJiIGRlciBlcmhvYmVuZW4gU3ByYWNoZW4KCmBgYHtyfQp0YWJsZShEYXRlbiRXb3J0Zm9sZ2UpCmBgYAoKCmBgYHtyfQptYXBzOjptYXAoIndvcmxkIgogICAgICAgICAgLGludGVyaW9yID0gRkFMU0UKICAgICAgICAgICwgY29sID0gImdyZXkiCiAgICAgICAgICAsIHJlc29sdXRpb24gPSAwKQoKY29scyA8LSBjKCJibHVlIiwgInJlZCIpCm15Y29scyA8LSBjb2xzW0RhdGVuJFdvcnRmb2xnZV0KCm15c3ltYm9scyA8LSBjKDIwLCAyMCkKV29ydGZvbGdlIDwtIG15c3ltYm9sc1tEYXRlbiRXb3J0Zm9sZ2VdCgpmcmVxIDwtIHRhYmxlKERhdGVuJFdvcnRmb2xnZSkKbXluYW1lIDwtIGMoCiAgICAgIHBhc3RlMCgiU09WLVNwcmFjaGUgKCIsIGZyZXFbMV0sICIpIikKICAgICwgcGFzdGUwKCJTVk8tU3ByYWNoZSAoIiwgZnJlcVsyXSwgIikiKQogICAgKQoKcG9pbnRzKERhdGVuJExvbmdpdHVkZSwgRGF0ZW4kTGF0aXR1ZGUKICAgICAgICwgcGNoID0gV29ydGZvbGdlCiAgICAgICAsIGNvbCA9IG15Y29scykKCnRpdGxlKG1haW4gPSAiRGllIFdvcnRmb2xnZSB2b24gU3ViamVrdCwgT2JqZWt0IHVuZCBWZXJiIGRlciBlcmhvYmVuZW4gU3ByYWNoZW4iKQoKbGVnZW5kICgiYm90dG9tbGVmdCIKICAgICAgICAsIGxlZ2VuZCA9IG15bmFtZQogICAgICAgICwgcGNoID0gV29ydGZvbGdlCiAgICAgICAgLCBjb2wgPSBjb2xzCiAgICAgICAgLCBjZXggPSAwLjcKICAgICAgICAsIHB0LmNleCA9IDEuNSkKYGBgCgpOaWNodCBudXIgYXVmIFNhdHogMSAiSWNoIGtvY2hlIFN1cHBlIiBzb25kZXJuIGF1Y2ggYWxsZSBhbmRlcmUgU8OkdHplIGJlcsO8Y2tzaWNodGlndC4gCgoKCgoKIyMzLjMgRGllIFdvcnRzdGVsbHVuZ2VuIGluIE5vbWluYWxwaHJhc2VuIGRlciBlcmhvYmVuZW4gU3ByYWNoZW4KCgoKCiMjIyAzLjMuMSBEaWUgUmVpaGVuZm9sZ2Ugdm9uIEFkamVrdGl2IHVuZCBOb21lbiBpbiBOb21pbmFscGhyYXNlCgoKYGBge3J9CnRhYmxlKERhdGVuJEFkamVrdGl2Lk5vbWVuKQpgYGAKCgojIyMjIEJpbGQgNDogRGllIFJlaWhlbmZvbGdlIHZvbiBBZGpla3RpdiB1bmQgTm9tZW4gaW4gTm9taW5hbHBocmFzZQoKYGBge3J9Cm1hcHM6Om1hcCgid29ybGQiCiAgICAgICAgICAsaW50ZXJpb3IgPSBGQUxTRQogICAgICAgICAgLCBjb2wgPSAiZ3JleSIKICAgICAgICAgICwgcmVzb2x1dGlvbiA9IDApCgpjb2xzIDwtIGMoInJlZCIsICJibHVlIiwgImdyZWVuMyIpCm15Y29sczEgPC0gY29sc1tEYXRlbiRBZGpla3Rpdi5Ob21lbl0KCm15c3ltYm9scyA8LSBjKDIwLCAyMCwgMjApCkFkak5vbiA8LSBteXN5bWJvbHNbRGF0ZW4kQWRqZWt0aXYuTm9tZW5dCgpteW5hbWUgPC0gYygiQWRqZWt0aXYgdm9yIE5vbWVuICgxNykiLCAiTm9tZW4gdm9yIEFkamVrdGl2ICg3KSIsICJCZWlkZXMgKDIpIikKCnBvaW50cyAoRGF0ZW4kTG9uZ2l0dWRlLCBEYXRlbiRMYXRpdHVkZQogICAgICAgLCBwY2ggPSBBZGpOb24KICAgICAgICwgY29sID0gbXljb2xzMSkKCnRpdGxlKG1haW4gPSAiRGllIFJlaWhlbmZvbGdlIHZvbiBBZGpla3RpdiB1bmQgTm9tZW4gaW4gTm9taW5hbHBocmFzZSIpCgpsZWdlbmQgKCJib3R0b21sZWZ0IgogICAgICAgICwgbGVnZW5kID0gbXluYW1lCiAgICAgICAgLCBwY2ggPSBBZGpOb24KICAgICAgICAsIGNvbCA9IGNvbHMKICAgICAgICAsIGNleCA9IDAuNwogICAgICAgICwgcHQuY2V4ID0gMS41KQpgYGAKCkFsbGUgYmVyw7xja3NpY2h0aWdlIE5vbWluYWxwaHJhc2U6IAoKCgoKIyMjIDMuMy4yIERpZSBSZWloZW5mb2xnZSB2b24gQXJ0aWtlbCB1bmQgTm9tZW4gaW4gTm9taW5hbHBocmFzZQoKYGBge3J9CnRhYmxlKERhdGVuJEFydGlrZWwuTm9tZW4pCmBgYAoKCgojIyMjIEJpbGQgNTogRGllIFJlaWhlbmZvbGdlIHZvbiBBcnRpa2VsIHVuZCBOb21lbiBpbiBOb21pbmFscGhyYXNlCgpgYGB7cn0KbWFwczo6bWFwKCJ3b3JsZCIKICAgICAgICAgICxpbnRlcmlvciA9IEZBTFNFCiAgICAgICAgICAsIGNvbCA9ICJncmV5IgogICAgICAgICAgLCByZXNvbHV0aW9uID0gMCkKCmNvbHMgPC0gYygicmVkIiwgImJsdWUiLCAiZ3JlZW4zIikKbXljb2xzMiA8LSBjb2xzW0RhdGVuJEFydGlrZWwuTm9tZW5dCgpteXN5bWJvbHMgPC0gYygyMCwgMjAsIDIwKQpBcnROb24gPC0gbXlzeW1ib2xzW0RhdGVuJEFydGlrZWwuTm9tZW5dCgpteW5hbWUgPC0gYygiQXJ0aWtlbCB2b3IgTm9tZW4gKDIzKSIsICJOb21lbiB2b3IgQXJ0aWtlbCAoMikiLCAiTmljaHQgS2xhciAoMSkiKQoKcG9pbnRzIChEYXRlbiRMb25naXR1ZGUsIERhdGVuJExhdGl0dWRlCiAgICAgICAsIHBjaCA9IEFydE5vbgogICAgICAgLCBjb2wgPSBteWNvbHMyKQoKdGl0bGUobWFpbiA9ICJEaWUgUmVpaGVuZm9sZ2Ugdm9uIEFydGlrZWwgdW5kIE5vbWVuIGluIE5vbWluYWxwaHJhc2UiKQoKbGVnZW5kICgiYm90dG9tbGVmdCIKICAgICAgICAsIGxlZ2VuZCA9IG15bmFtZQogICAgICAgICwgcGNoID0gQXJ0Tm9uCiAgICAgICAgLCBjb2wgPSBjb2xzCiAgICAgICAgLCBjZXggPSAwLjcKICAgICAgICAsIHB0LmNleCA9IDEuNSkKYGBgCgpBbGxlIGJlcsO8Y2tzaWNodGlnZSBOb21pbmFscGhyYXNlOgoKCgo/Pz8KTkEgemVpZ3QgaGllciBpbiBkZXIgS2FydGUgbmljaHQuLi4gUGVyc2lzY2gKPz8/CgpXYXJ1bSBuaWNodCBrbGFyPyBuaWNodCBlaW5nZWdlYmVuPyBuaWNodCB2b3Jrb21tZW4/IGV0Yy4KCgoKCiMjIyAzLjMuMyBEaWUgUmVpaGVuZm9sZ2Ugdm9uIEZhcmJlIHVuZCBOb21lbiBpbiBOb21pbmFscGhyYXNlICJyb3RlciBCYWxsIgoKYGBge3J9CnRhYmxlKERhdGVuJEZhcmJlLk5vbWVuKQpgYGAKCgoKIyMjIyBCaWxkIDY6IERpZSBSZWloZW5mb2xnZSB2b24gRmFyYmUgdW5kIE5vbWVuIGluIE5vbWluYWxwaHJhc2U6IHJvdGVyIEJhbGwKCmBgYHtyfQptYXBzOjptYXAoIndvcmxkIgogICAgICAgICAgLGludGVyaW9yID0gRkFMU0UKICAgICAgICAgICwgY29sID0gImdyZXkiCiAgICAgICAgICAsIHJlc29sdXRpb24gPSAwKQoKY29scyA8LSBjKCJyZWQiLCAiYmx1ZSIpCm15Y29sczMgPC0gY29sc1tEYXRlbiRGYXJiZS5Ob21lbl0KCm15c3ltYm9scyA8LSBjKDIwLCAyMCkKRmFyYk5vbiA8LSBteXN5bWJvbHNbRGF0ZW4kRmFyYmUuTm9tZW5dCgpteW5hbWUgPC0gYygiRmFyYmUgdm9yIE5vbWVuICgxOCkiLCAiTm9tZW4gdm9yIEZhcmJlICg4KSIpCgpwb2ludHMgKERhdGVuJExvbmdpdHVkZSwgRGF0ZW4kTGF0aXR1ZGUKICAgICAgICwgcGNoID0gRmFyYk5vbgogICAgICAgLCBjb2wgPSBteWNvbHMzKQoKdGl0bGUobWFpbiA9ICJEaWUgUmVpaGVuZm9sZ2Ugdm9uIEZhcmJlIHVuZCBOb21lbiBpbiBOb21pbmFscGhyYXNlOiByb3RlciBCYWxsIikKCmxlZ2VuZCAoImJvdHRvbWxlZnQiCiAgICAgICAgLCBsZWdlbmQgPSBteW5hbWUKICAgICAgICAsIHBjaCA9IEZhcmJOb24KICAgICAgICAsIGNvbCA9IGNvbHMKICAgICAgICAsIGNleCA9IDAuNwogICAgICAgICwgcHQuY2V4ID0gMS41KQpgYGAKCgoKCgoKCgoKIyMjIDMuMy40IERpZSBSZWloZW5mb2xnZSB2b24gTnVtZXJhbCB1bmQgTm9tZW4gaW4gTm9taW5hbHBocmFzZSAiZsO8bmYgSMOkdXNlciIKCgpgYGB7cn0KdGFibGUoRGF0ZW4kTnVtZXJhbC5Ob21lbikKYGBgCgoKIyMjIyBCaWxkIDc6IERpZSBSZWloZW5mb2xnZSB2b24gTnVtZXJhbCB1bmQgTm9tZW4gaW4gTm9taW5hbHBocmFzZTogZsO8bmYgSMOkdXNlcgoKYGBge3J9Cm1hcHM6Om1hcCgid29ybGQiCiAgICAgICAgICAsaW50ZXJpb3IgPSBGQUxTRQogICAgICAgICAgLCBjb2wgPSAiZ3JleSIKICAgICAgICAgICwgcmVzb2x1dGlvbiA9IDApCgpjb2xzIDwtIGMoImJsdWUiLCAicmVkIikKbXljb2xzNCA8LSBjb2xzW0RhdGVuJE51bWVyYWwuTm9tZW5dCgpteXN5bWJvbHMgPC0gYygyMCkKTnVtTm9uIDwtIG15c3ltYm9sc1tEYXRlbiROdW1lcmFsLk5vbWVuXQoKbXluYW1lIDwtIGMoIk51bWVyYWwgdm9yIE5vbWVuICgyNikiLCAiTm9tZW4gdm9yIE51bWVyYWwgKDApIikKCnBvaW50cyAoRGF0ZW4kTG9uZ2l0dWRlLCBEYXRlbiRMYXRpdHVkZQogICAgICAgLCBwY2ggPSBOdW1Ob24KICAgICAgICwgY29sID0gbXljb2xzNCkKCnRpdGxlKG1haW4gPSAiRGllIFJlaWhlbmZvbGdlIHZvbiBOdW1lcmFsIHVuZCBOb21lbiAKaW4gTm9taW5hbHBocmFzZTogZsO8bmYgSMOkdXNlciIpCgpsZWdlbmQgKCJib3R0b21sZWZ0IgogICAgICAgICwgbGVnZW5kID0gbXluYW1lCiAgICAgICAgLCBwY2ggPSBOdW1Ob24KICAgICAgICAsIGNvbCA9IGNvbHMKICAgICAgICAsIGNleCA9IDAuNwogICAgICAgICwgcHQuY2V4ID0gMS41KQpgYGAKCkluIGFsbGVuIGVyaG9iZW5lbiBTcHJhY2hlbiBzaW5kIE51bWVyYWwgdm9yIE5vbWVuIGluIE5vbWluYWxwaHJhc2UgImbDvG5mIEjDpHVzZXIiLCBoaWVyIGdpYnQgZXMga2VpbmUgQXVzbmFobWUuCgoKCgoKIyMjIDMuMy41IERpZSBXb3J0Zm9sZ2Ugdm9uIEdlbml0aXYgdW5kIE5vbWVuIGluIE5vbWluYWxwaHJhc2UgIk11c2lrIHZvbiBNb3phcnQiCgpgYGB7cn0KdGFibGUoRGF0ZW4kTXVzaWsuTW96YXJ0KQpgYGAKCgoKIyMjIyBCaWxkIDg6IERpZSBXb3J0Zm9sZ2Ugdm9uIEdlbml0aXYgdW5kIE5vbWVuIGluIE5vbWluYWxwaHJhc2U6IE11c2lrIHZvbiBNb3phcnQKCmBgYHtyfQptYXBzOjptYXAoIndvcmxkIgogICAgICAgICAgLGludGVyaW9yID0gRkFMU0UKICAgICAgICAgICwgY29sID0gImdyZXkiCiAgICAgICAgICAsIHJlc29sdXRpb24gPSAwKQoKY29scyA8LSBjKCJyZWQiLCAiYmx1ZSIsICJncmVlbjMiKQpteWNvbHM1IDwtIGNvbHNbRGF0ZW4kTXVzaWsuTW96YXJ0XQoKbXlzeW1ib2xzIDwtIGMoMjAsIDIwLCAyMCkKTXVNbyA8LSBteXN5bWJvbHNbRGF0ZW4kTXVzaWsuTW96YXJ0XQoKbXluYW1lIDwtIGMoIkdlbml0aXYgdm9yIE5vbWVuICg5KSIsICJOb21lbiB2b3IgR2VuaXRpdiAoMTUpIiwgIk5pY2h0IGtsYXIgKDIpIikKCnBvaW50cyAoRGF0ZW4kTG9uZ2l0dWRlLCBEYXRlbiRMYXRpdHVkZQogICAgICAgLCBwY2ggPSBNdU1vCiAgICAgICAsIGNvbCA9IG15Y29sczUpCgp0aXRsZShtYWluID0gIkRpZSBXb3J0Zm9sZ2Ugdm9uIEdlbml0aXYgdW5kIE5vbWVuCmluIE5vbWluYWxwaHJhc2U6IE11c2lrIHZvbiBNb3phcnQiKQoKbGVnZW5kICgiYm90dG9tbGVmdCIKICAgICAgICAsIGxlZ2VuZCA9IG15bmFtZQogICAgICAgICwgcGNoID0gTXVNbwogICAgICAgICwgY29sID0gY29scwogICAgICAgICwgY2V4ID0gMC43CiAgICAgICAgLCBwdC5jZXggPSAxLjUpCmBgYAoKCgoKCgoKIyMzLjQgRGllIFJlaWhlbmZvbGdlIHZvbiB2ZXJzY2hpZWRlbmVuIEFydGVuIGRlciBBZGpla3RpdmVuIGluIE5vbWluYWxwaHJhc2UKCgoKIyMjIDMuNC4xIERpZSBSZWloZW5mb2xnZSB2b24gQXJ0aWtlbCB1bmQgRmFyYmUgaW4gTm9taW5hbHBocmFzZSAiZWluZW4gcm90ZW4gQmFsbCIKCmBgYHtyfQp0YWJsZShEYXRlbiRBcnRpa2VsLkZhcmJlKQpgYGAKCiMjIyMgQmlsZCA5OiBEaWUgUmVpaGVuZm9sZ2Ugdm9uIEFydGlrZWwgdW5kIEZhcmJlIGluIE5vbWluYWxwaHJhc2U6IGVpbmVuIHJvdGVuIEJhbGwKCmBgYHtyfQptYXBzOjptYXAoIndvcmxkIgogICAgICAgICAgLGludGVyaW9yID0gRkFMU0UKICAgICAgICAgICwgY29sID0gImdyZXkiCiAgICAgICAgICAsIHJlc29sdXRpb24gPSAwKQoKY29scyA8LSBjKCJibHVlIiwgInJlZCIsICJncmVlbjMiKQpteWNvbHM2IDwtIGNvbHNbRGF0ZW4kQXJ0aWtlbC5GYXJiZV0KCm15c3ltYm9scyA8LSBjKDIwLCAyMCwgMjApCkFydEZhIDwtIG15c3ltYm9sc1tEYXRlbiRBcnRpa2VsLkZhcmJlXQoKbXluYW1lIDwtIGMoIkFydGlrZWwgdm9yIEZhcmJlICgyOCkiLCAiRmFyYmUgdm9yIEFydGlrZWwgKDEpIiwgIk5pY2h0IGtsYXIgKDcpIikKCnBvaW50cyAoRGF0ZW4kTG9uZ2l0dWRlLCBEYXRlbiRMYXRpdHVkZQogICAgICAgLCBwY2ggPSBBcnRGYQogICAgICAgLCBjb2wgPSBteWNvbHM2KQoKdGl0bGUobWFpbiA9ICJEaWUgUmVpaGVuZm9sZ2Ugdm9uIEFydGlrZWwgdW5kIEZhcmJlIAppbiBOb21pbmFscGhyYXNlOiBlaW5lbiByb3RlbiBCYWxsIikKCmxlZ2VuZCAoImJvdHRvbWxlZnQiCiAgICAgICAgLCBsZWdlbmQgPSBteW5hbWUKICAgICAgICAsIHBjaCA9IEFydEZhCiAgICAgICAgLCBjb2wgPSBjb2xzCiAgICAgICAgLCBjZXggPSAwLjcKICAgICAgICAsIHB0LmNleCA9IDEuNSkKYGBgCgoKCj8/PyBXYXJ1bSBzbyB2aWxlICJuaWNodCBrbGFyIgoKCgoKIyMjIDMuNC4yIERpZSBSZWloZW5mb2xnZSB2b24gQXJ0aWtlbCB1bmQgTnVtZXJhbCBpbiBOb21pbmFscGhyYXNlICJkaWVzZSBmw7xuZiBIw6R1c2VyIgoKCmBgYHtyfQp0YWJsZShEYXRlbiRBcnRpa2VsLk51bWVyYWwpCmBgYAoKCiMjIyMgQmlsZCAxMDogRGllIFJlaWhlbmZvbGdlIHZvbiBBcnRpa2VsIHVuZCBOdW1lcmFsIGluIE5vbWluYWxwaHJhc2U6IGRpZXNlIGbDvG5mIEjDpHVzZXIKCmBgYHtyfQptYXBzOjptYXAoIndvcmxkIgogICAgICAgICAgLGludGVyaW9yID0gRkFMU0UKICAgICAgICAgICwgY29sID0gImdyZXkiCiAgICAgICAgICAsIHJlc29sdXRpb24gPSAwKQoKY29scyA8LSBjKCJibHVlIiwgImdyZWVuMyIsICJyZWQiKQpteWNvbHM3IDwtIGNvbHNbRGF0ZW4kQXJ0aWtlbC5OdW1lcmFsXQoKbXlzeW1ib2xzIDwtIGMoMjAsIDIwLCAyMCkKQXJ0TnVtIDwtIG15c3ltYm9sc1tEYXRlbiRBcnRpa2VsLk51bWVyYWxdCgpteW5hbWUgPC0gYygiQXJ0aWtlbCB2b3IgTnVtZXJhbCAoMjEpIiwgIk5pY2h0IGtsYXIgKDEpIiwgIk51bWVyYWwgdm9yIEFydGlrZWwgKDQpIikKCnBvaW50cyAoRGF0ZW4kTG9uZ2l0dWRlLCBEYXRlbiRMYXRpdHVkZQogICAgICAgLCBwY2ggPSBBcnROdW0KICAgICAgICwgY29sID0gbXljb2xzNykKCnRpdGxlKG1haW4gPSAiRGllIFJlaWhlbmZvbGdlIHZvbiBBcnRpa2VsIHVuZCBOdW1lcmFsCmluIE5vbWluYWxwaHJhc2U6IGRpZXNlIGbDvG5mIEjDpHVzZXIiKQoKbGVnZW5kICgiYm90dG9tbGVmdCIKICAgICAgICAsIGxlZ2VuZCA9IG15bmFtZQogICAgICAgICwgcGNoID0gQXJ0TnVtCiAgICAgICAgLCBjb2wgPSBjb2xzCiAgICAgICAgLCBjZXggPSAwLjcKICAgICAgICAsIHB0LmNleCA9IDEuNSkKYGBgCgoKCgoKCgoKCgojIyMgMy40LjMgRGllIFJlaWhlbmZvbGdlIHZvbiBBcnRpa2VsIHVuZCBBZGpla3RpdiBpbiBOb21pbmFscGhyYXNlICJkYXMgZmV1Y2h0ZSBIb2x6IgoKYGBge3J9CnRhYmxlKERhdGVuJEFydGlrZWwuQWRqZWt0aXYpCmBgYAoKCiMjIyMgQmlsZCAxMTogRGllIFJlaWhlbmZvbGdlIHZvbiBBcnRpa2VsIHVuZCBBZGpla3RpdiBpbiBOb21pbmFscGhyYXNlOiBkYXMgZmV1Y2h0ZSBIb2x6CgpgYGB7cn0KbWFwczo6bWFwKCJ3b3JsZCIKICAgICAgICAgICxpbnRlcmlvciA9IEZBTFNFCiAgICAgICAgICAsIGNvbCA9ICJncmV5IgogICAgICAgICAgLCByZXNvbHV0aW9uID0gMCkKCmNvbHMgPC0gYygiYmx1ZSIsICJyZWQiLCAiZ3JlZW4zIikKbXljb2xzOCA8LSBjb2xzW0RhdGVuJEFydGlrZWwuQWRqZWt0aXZdCgpteXN5bWJvbHMgPC0gYygyMCwgMjAsIDIwKQpBcnRBZGogPC0gbXlzeW1ib2xzW0RhdGVuJEFydGlrZWwuQWRqZWt0aXZdCgpteW5hbWUgPC0gYygiQWRqZWt0aXYgdm9yIEFydGlrZWwgKDIyKSIsICJBcnRpa2VsIHZvciBBZGpla3RpdiAoMikiLCAiTmljaHQga2xhciAoMikiKQoKcG9pbnRzIChEYXRlbiRMb25naXR1ZGUsIERhdGVuJExhdGl0dWRlCiAgICAgICAsIHBjaCA9IEFydEFkagogICAgICAgLCBjb2wgPSBteWNvbHM4KQoKdGl0bGUobWFpbiA9ICJEaWUgUmVpaGVuZm9sZ2Ugdm9uIEFydGlrZWwgdW5kIEFkamVrdGl2IAppbiBOb21pbmFscGhyYXNlOiBkYXMgZmV1Y2h0ZSBIb2x6IikKCmxlZ2VuZCAoImJvdHRvbWxlZnQiCiAgICAgICAgLCBsZWdlbmQgPSBteW5hbWUKICAgICAgICAsIHBjaCA9IEFydEFkagogICAgICAgICwgY29sID0gY29scwogICAgICAgICwgY2V4ID0gMC43CiAgICAgICAgLCBwdC5jZXggPSAxLjUpCmBgYAoKCgoKCgoKCgojIyMgMy40LjQgRGllIFJlaWhlbmZvbGdlIHZvbiBGYXJiZSB1bmQgQWRqZWt0aXYgaW4gTm9taW5hbHBocmFzZSAic2Now7ZuZW4gcm90ZW4gQmFsbCIKCmBgYHtyfQp0YWJsZShEYXRlbiRGYXJiZS5BZGpla3RpdikKYGBgCgojIyMjIEJpbGQgMTI6IERpZSBSZWloZW5mb2xnZSB2b24gQWRqZWt0aXYgdW5kIEZhcmJlIGluIE5vbWluYWxwaHJhc2U6IHNjaMO2bmVuIHJvdGVuIEJhbGwKCmBgYHtyfQptYXBzOjptYXAoIndvcmxkIgogICAgICAgICAgLGludGVyaW9yID0gRkFMU0UKICAgICAgICAgICwgY29sID0gImdyZXkiCiAgICAgICAgICAsIHJlc29sdXRpb24gPSAwKQoKY29scyA8LSBjKCJibHVlIiwgInJlZCIpCm15Y29sczkgPC0gY29sc1tEYXRlbiRGYXJiZS5BZGpla3Rpdl0KCm15c3ltYm9scyA8LSBjKDIwLCAyMCkKRmFBZGogPC0gbXlzeW1ib2xzW0RhdGVuJEZhcmJlLkFkamVrdGl2XQoKbXluYW1lIDwtIGMoIkFkamVrdGl2IHZvciBGYXJiZSAoMjApIiwgIkZhcmJlIHZvciBBZGpla3RpdiAoNikiKQoKcG9pbnRzIChEYXRlbiRMb25naXR1ZGUsIERhdGVuJExhdGl0dWRlCiAgICAgICAsIHBjaCA9IEZhQWRqCiAgICAgICAsIGNvbCA9IG15Y29sczkpCgp0aXRsZShtYWluID0gIkRpZSBSZWloZW5mb2xnZSB2b24gQWRqZWt0aXYgdW5kIEZhcmJlIAppbiBOb21pbmFscGhyYXNlOiBzY2jDtm5lbiByb3RlbiBCYWxsIikKCmxlZ2VuZCAoImJvdHRvbWxlZnQiCiAgICAgICAgLCBsZWdlbmQgPSBteW5hbWUKICAgICAgICAsIHBjaCA9IEZhQWRqCiAgICAgICAgLCBjb2wgPSBjb2xzCiAgICAgICAgLCBjZXggPSAwLjcKICAgICAgICAsIHB0LmNleCA9IDEuNSkKYGBgCgoKCgoKCiMjIyAzLjQuNSBEaWUgUmVpaGVuZm9sZ2Ugdm9uIEFkamVrdGl2IHVuZCBVbWZhbmdzYWRqZWt0aXYgaW4gTm9taW5hbHBocmFzZSAic2Now7ZuZW4gZ3Jvw59lbiBCYWxsIgoKYGBge3J9CnRhYmxlKERhdGVuJEFkamVrdGl2LkFkamVrdGl2LlVtZmFuZykKYGBgCgojIyMjIEJpbGQgMTM6IERpZSBSZWloZW5mb2xnZSB2b24gQWRqZWt0aXYgdW5kIFVtZmFuZ3NhZGpla3RpdiBpbiBOb21pbmFscGhyYXNlOiBzY2jDtm5lbiBncm/Dn2VuIEJhbGwKCmBgYHtyfQptYXBzOjptYXAoIndvcmxkIgogICAgICAgICAgLGludGVyaW9yID0gRkFMU0UKICAgICAgICAgICwgY29sID0gImdyZXkiCiAgICAgICAgICAsIHJlc29sdXRpb24gPSAwKQoKY29scyA8LSBjKCJibHVlIiwgInJlZCIsICJncmVlbjMiKQpteWNvbHMxMCA8LSBjb2xzW0RhdGVuJEFkamVrdGl2LkFkamVrdGl2LlVtZmFuZ10KCm15c3ltYm9scyA8LSBjKDIwLCAyMCwgMjApCkFkakFkalUgPC0gbXlzeW1ib2xzW0RhdGVuJEFkamVrdGl2LkFkamVrdGl2LlVtZmFuZ10KCm15bmFtZSA8LSBjKCJVbWZhbmdzYWRqZWt0aXYgdm9yIEFkamVrdGl2ICg4KSIsICJBZGpla3RpdiB2b3IgVW1mYW5nc2FkamVrdGl2ICgxNikiLCAiTmljaHQga2xhciAoMikiKQoKcG9pbnRzIChEYXRlbiRMb25naXR1ZGUsIERhdGVuJExhdGl0dWRlCiAgICAgICAsIHBjaCA9IEFkakFkalUKICAgICAgICwgY29sID0gbXljb2xzMTApCgp0aXRsZShtYWluID0gIkRpZSBSZWloZW5mb2xnZSB2b24gQWRqZWt0aXYgdW5kIFVtZmFuZ3NhZGpla3RpdiAKaW4gTm9taW5hbHBocmFzZTogc2Now7ZuZW4gZ3Jvw59lbiBCYWxsIikKCmxlZ2VuZCAoImJvdHRvbWxlZnQiCiAgICAgICAgLCBsZWdlbmQgPSBteW5hbWUKICAgICAgICAsIHBjaCA9IEFkakFkalUKICAgICAgICAsIGNvbCA9IGNvbHMKICAgICAgICAsIGNleCA9IDAuNwogICAgICAgICwgcHQuY2V4ID0gMS41KQpgYGAKCgoKCmBgYHtyfQoKYGBgCgoKCgoKCgoKYGBge3J9CgpgYGAKCgoKCgoKCiM0LiBadXNhbW1lbmhhbmcgendpc2NoZW4gZGVuIFdvcnRmb2xnZW4gdW5kIGRlbiBXb3J0c3RlbGx1bmdlbiBpbiBOb21pbmFscGhyYXNlbiAgZGVyIGVyaG9iZW5lbiBTcHJhY2hlbgoKCioqVmVybXV0dW5nZW4qKgoKYGBge3J9CgpgYGAKCgoKIyM0LjEgWnVzYW1tZW5oYW5nIHp3aXNjaGVuIGRlbiBXb3J0Zm9sZ2VuIHVuZCBkZW4gV29ydHN0ZWxsdW5nIGRlciBBZGpla3RpdiB1bmQgTm9tZW4KCgoKYGBge3J9CkZvbGdlMSA8LSB0YWJsZShEYXRlbiRXb3J0Zm9sZ2UsIERhdGVuJEFkamVrdGl2Lk5vbWVuKQpGb2xnZTEKYGBgCgoKCgoKYGBge3J9CmJhcnBsb3QgKEZvbGdlMQogICAgICAgICAsIG1haW4gPSAiWnVzYW1tZW5oYW5nIHp3aXNjaGVuIGRlbiBXb3J0Zm9sZ2VuIHVuZApkZW4gV29ydHN0ZWxsdW5nIGRlciBBZGpla3RpdiB1bmQgTm9tZW4iCiAgICAgICAgICkKYGBgCkRlciBVbnRlcnNjaGllZCB6d2lzY2hlbiBkZW4gU3ByYWNoZW4ga2FubiBtYW4gYXVjaCBtaXQgZWluZW0gQm94cGxvdCBkYXJzdGVsbGVuLCBhYmVyIGRhcyBoaWxmdCBuaWNodCBzbyB2aWVsLCB3ZWlsIGplZGVyIFZva2FsIGFuZGVycyBpc3QuIAoKCmBgYHtyfQptb3NhaWNwbG90KEZvbGdlMQogICAgICAgICAgICwgY29sb3IgPSBUUlVFCiAgICAgICAgICAgLCB4bGFiID0gIldvcnRmb2xnZSIKICAgICAgICAgICAsIHlsYWIgPSAiV29ydHN0bGx1bmcgZGVyIEFkamVrdGl2IHVuZCBOb21lbiIKICAgICAgICAgICAsIG1haW4gPSAiWnVzYW1tZW5oYW5nIHp3aXNjaGVuIGRlbiBXb3J0Zm9sZ2VuIHVuZCAKZGVuIFdvcnRzdGVsbHVuZ2VuIGRlciBBZGpla3RpdiB1bmQgTm9tZW4iKQpgYGAKCgpgYGB7cn0KY2hpc3EudGVzdChGb2xnZTEpCmBgYAoKCgpgYGB7cn0KdC50ZXN0KEZvbGdlMSkKYGBgCgoKPz8/IApgYGB7cn0KY29yLnRlc3QoRm9sZ2UxLCBGb2xnZTEpCmBgYAoKCgoKIyM0LjIgWnVzYW1tZW5oYW5nIHp3aXNjaGVuIGRlbiBXb3J0Zm9sZ2VuIHVuZCBkZW4gV29ydHN0ZWxsdW5nZW4gZGVyIEFydGlrZWwgdW5kIE5vbWVuIAoKCgpgYGB7cn0KRm9sZ2UyIDwtIHRhYmxlKERhdGVuJFdvcnRmb2xnZSwgRGF0ZW4kQXJ0aWtlbC5Ob21lbikKRm9sZ2UyCmBgYAoKCgoKCgpgYGB7cn0KbW9zYWljcGxvdCAoRm9sZ2UyCiAgICAgICAgICAgICwgY29sb3IgPSBUUlVFCiAgICAgICAgLCB4bGFiID0gIldvcnRmb2xnZW4iCiAgICAgICAgLCB5bGFiID0gIldvcnRzdGVsbHVuZyB2b24gQXJ0aWtlbCB1bmQgTm9tZW4iCiAgICAgICAgLCBtYWluID0gIlp1c2FtbWVuaGFuZyB6d2lzY2hlbiBkZW4gV29ydGZvbGdlbiB1bmQKICAgICAgICBkZW4gV29ydHN0ZWxsdW5nZW4gZGVyIEFydGlrZWwgdW5kIE5vbWVuICIpCmBgYAoKCmBgYHtyfQpjaGlzcS50ZXN0KEZvbGdlMikKYGBgCgpgYGB7cn0KdC50ZXN0KEZvbGdlMikKYGBgCgpgYGB7cn0KY29yLnRlc3QoRm9sZ2UyLCBGb2xnZTIpCmBgYAoKCgojIzQuMyBadXNhbW1lbmhhbmcgendpc2NoZW4gZGVuIFdvcnRmb2xnZW4gdW5kIGRlbiBXb3J0c3RlbGx1bmdlbiBkZXIgRmFyYmUgdW5kIE5vbWVuIAoKCgpgYGB7cn0KRm9sZ2UzIDwtIHRhYmxlKERhdGVuJFdvcnRmb2xnZSwgRGF0ZW4kRmFyYmUuTm9tZW4pCkZvbGdlMwpgYGAKCgpgYGB7cn0KbW9zYWljcGxvdCAoRm9sZ2UzCiAgICAgICAgLCBjb2xvciA9IFRSVUUKICAgICAgICAsIHhsYWIgPSAiV29ydGZvbGdlbiIKICAgICAgICAsIHlsYWIgPSAiV29ydHN0ZWxsdW5nIHZvbiBGYXJiZSB1bmQgTm9tZW4iCiAgICAgICAgLCBtYWluID0gIlp1c2FtbWVuaGFuZyB6d2lzY2hlbiBkZW4gV29ydGZvbGdlbiB1bmQKZGVuIFdvcnRzdGVsbHVuZ2VuIGRlciBGYXJiZSB1bmQgTm9tZW4gIikKYGBgCgoKYGBge3J9CmNoaXNxLnRlc3QoRm9sZ2UzKQpgYGAKCgpgYGB7cn0KdC50ZXN0KEZvbGdlMykKYGBgCgoKIyM0LjQgWnVzYW1tZW5oYW5nIHp3aXNjaGVuIGRlbiBXb3J0Zm9sZ2VuIHVuZCBkZW4gV29ydHN0ZWxsdW5nZW4gZGVyIE51bWVyYWwgdW5kIE5vbWVuIAoKYGBge3J9CkZvbGdlNCA8LSB0YWJsZShEYXRlbiRXb3J0Zm9sZ2UsIERhdGVuJE51bWVyYWwuTm9tZW4pCkZvbGdlNApgYGAKCmBgYHtyfQptb3NhaWNwbG90IChGb2xnZTQKICAgICAgICAsIHhsYWIgPSAiV29ydGZvbGdlbiIKICAgICAgICAsIHlsYWIgPSAiV29ydHN0ZWxsdW5nIHZvbiBOdW1lcmFsIHVuZCBOb21lbiIKICAgICAgICAsIG1haW4gPSAiWnVzYW1tZW5oYW5nIHp3aXNjaGVuIGRlbiBXb3J0Zm9sZ2VuIHVuZApkZW4gV29ydHN0ZWxsdW5nZW4gZGVyIE51bWVyYWwgdW5kIE5vbWVuICIpCmBgYAoKCmBgYHtyfQpjaGlzcS50ZXN0KEZvbGdlNCkKYGBgCgoKYGBge3J9CnQudGVzdChGb2xnZTQpCmBgYAoKCgoKYGBge3J9CgpgYGAKCgoKCgoKCiM1LiBBbGxnZW1laW5lIERpc2t1c3Npb24gdW5kIEF1c2JsaWNrCgoKCktyaXRpawpJbiB2aWVsZW4gU3ByYWNoZW4gc2luZCBkaWUgQmVkZXV0dW5nIHZvbiBqZWRlbSBXb3J0IG5pY2h0IGtsYXIgbWFya2llcnQgb2RlciBnZXNjaHJpZWJlbiwgd2llIFBlcnNpc2NoLCBLb3JlYW5pc2NoLiBNYW4ga2FubiBudXIgbWl0IFfDtnJ0ZXJidWNoIHVuZCBHb29nbGUgw5xiZXJzZXR6ZXIgZGllIEJlZGV1dHVuZyB2b20gZWluemVsbmVuIFdvcnQgcmF1c3N1Y2hlbiwgYWJlciBtZWlzdGVucyBpc3QgbWFuIHVuc2ljaGVyLiAgRGFoZXIga2FubiBtYW4gbnVyIGRpZSBBcnQgdm9uIFdvcnQgZmVzdHN0ZWxsZW4sIG5pY2h0IGRpZSBnZW5hdWUgQmVkZXV0dW5nIHVuZCBGZWluaGVpdC4gCgoKU2F0eiAxOiBJY2gga29jaGUgU3VwcGUuCkluIFZpZWxlbiBTcHJhY2hlbiB3aXJkIGRlciBTdWJqZWt0IG5pY2h0IGVpbmdlZ2ViZW4sIHdlbm4gZXMgImljaCIgaXN0LiAiSWNoIiBhbHMgU3ViamVrdCB3aXJkIGluIGRlciBFbmR1bmcgdm9uIFZlcmIgbWFraWVydC4gCgoKCktyaXRpazoKMSBOdXIgbWl0IGVpbiBwYWFyIFPDpHR6ZW4gdm9uIMOcYmVyc2V0enVuZ2VuIGthbm4gbWFuIG5pY2h0IGFsbGUgVmFyaWF0aW9uZW4gdm9uIGVpbmVyIFNwcmFjaGUgYmVrb21tZW4sIHNvbmRlcm4gbnVyIGRpZSBwYXNzZW5kZSBGb3JtIHZvbiBkaWVzZW0gU2F0ei4gRGFzIGJlZGV1dGV0IG5vY2ggbGFuZ2UgbmljaHQsIGRhc3MgYW5kZXJlIEZvcm0gaW4gZGllc2VyIFNwcmFjaGUgbmljaHQgZ2lidC4KCjIgRGllIGltIFRleHQgdmVyZ2xlaWNoZW5kZSBSZWloZm9sZ2VuIHNpbmQgYXVjaCBuaWNodCB1bmJlZGluZ3Qgc28gYXVzZ2VkcsO8Y2t0IGluIGRlciBTcHJhY2hlIGluIGFsbGVuIEF1c2Ryw7xja3NzaXR1YXRpb25lbi4gCgoKSmVkb2NoIGdpYnQgZXMgdW5zIGVpbmUgZ3V0ZSDDnGJlcmJsaWNrIHZvbiBTcHJhY2hlbiBkZXIgV2VsdCwgZGFzcyBkaWUgU3ByYWNoZSBzZWhyIHZpZWxmw6RsdGlnIHNpbmQgdW5kIGRvY2ggZWluZW4gWnVzYW1tZW5oYW5nIG1pdCBlaW5hbmRlcm4gaGFiZW4uCgoKCgojTGl0ZXJhdHVyLSB1bmQgUXVlbGxlbnZlcnplaWNobmlzCgotIEtvb3JkaW5hdGUgZsO8ciBkaWUgZXJob2JlbmVuIFNwcmFjaGVuOiBodHRwOi8vd2Fscy5pbmZvL2xhbmd1b2lkIChhdWZnZXJ1ZmVuIGFtIDIyLjAyLjIwMTgpCi0gQ3JvZnQgVy4gVHlwb2xvZ3kgYW5kIHVuaXZlcnNhbHNbTV0uIENhbWJyaWRnZSBVbml2ZXJzaXR5IFByZXNzLCAyMDAyLgotIE0uIEhhc3BlbG1hdGg6IFNwcmFjaGVuIGRlciBXZWx0LiBNYXgtUGxhbmNrLUluc3RpdHV0IGbDvHIgZXZvbHV0aW9uw6RyZSBBbnRocm9wb2xvZ2llICgxOTk5LTIwMDUpIGh0dHA6Ly9ob21lLnVuaS1sZWlwemlnLmRlL211ZWxsZXJnL3N1L2hhc3BlbG1hdGgucGRmIChhdWZnZXJ1ZmVuIGFtIDE0LjAzLjIwMTgpCgoKCgoKCg==